# Title:En una lista de 12 numeros, encontrar el mayor siendo los numeros impares				Filename: Ejercico_12.s
# Autho: Hernandez Barrios 	Eric Harim 									Date: 3/ Abril / 2017
# Description: Maximo de un numero en una lista
# Input: -
# Output: Max listas
@Ejercicio_12.s
@ Encontrar el maximo de una lista de 15 numeros



#DATA SEGMENT
     ARR DB 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31 #DB define un byte
     LEN DW $-ARR #DW define una palabra del tamaño de 2 bytes , guardar el largo del arreglo que se genera por $ seguido del nombre del arreglo
     LARGE DB ? #? valor en blanco
#DATA ENDS
#CODE SEGMENT 
        ASSUME DS:DATA CS:CODE #Asigna DATA al segmento de datos y CODE al segemento del codigo
#START:  #label en donde enseña el punto en el codigo donde inicia el segmento del codigo
        MOV AX,DATA 
        MOV DS,AX
        # Despues de asignar  DATA y CODE , MOV mueve el segundo elemento en el primero, pero no podemos mover DATA directamente del DS por reestrincciones entonces movemos data a AX y despues AX a DS donde AX es el primero y mas importante registro en la unidad ALU, a esto se le llama inicializar el segmento de datos y es importante porque los elementos de datos o las variables de los segmentos de datos las hagan accesibles.
           
        LEA SI,ARR 
        #LEA carga mas efectivamente la direccion del segundo elemento en el primero
       
        MOV AL,ARR[SI] #significa mover el valor del arreglo ARR en el index del registro SI al registro AL
        MOV LARGE,AL #mueve el registro AL el primer elemento del arreglo a la variable LARGE asiq euremos para comparar con todos los elementos del arreglo
               
        MOV CX,LEN # usado para mover o asignar el valor de 15  a CX 
#REPEAT:
        MOV AL,ARR[SI] 
        CMP LARGE,AL # es usado para comparar el registro de AX con 16 y JG NOCHANGE brincará si AL es mayo en retrospetiva al label NOCHANGE. el resultado de la comparacion no esta guardado todavia.
        JG NOCHANGE
       
        MOV LARGE,AL #Mueve el registro AL a la variable LARGE
#NOCHANGE:
        INC SI #incrementara el valor de la direccion del registro SI , estamos usando el registro Si como fuente de indez el cual almacena la direccion de los elementos del arreglo 
        LOOP REPEAT #fin del loop 
     
        MOV AH,4CH
        INT 21H   
#estas dos lineas es usado para salir del sistema lo cual significa el fin del problema		
#CODE ENDS
#END START
